var luckysheetConfig = function() {
	return {
		getOptionsData(rowNums, colNums, cellData, dataVerfications) {
			let data = [{
				"name": "检验", //工作表名称
				"color": "", //工作表颜色
				"index": 0, //工作表索引
				"status": 1, //激活状态
				"order": 0, //工作表的下标
				"hide": 0, //是否隐藏
				"row": rowNums, //行数
				"column": colNums, //列数
				"defaultRowHeight": 19, //自定义行高
				"defaultColWidth": 80, //自定义列宽
				"celldata": cellData,
				"config": {
					"merge": {}, //合并单元格
					"borderType": "border-all",
					"rowlen": {}, //表格行高
					"columnlen": {}, //表格列宽
					"rowhidden": {}, //隐藏行
					"colhidden": {}, //隐藏列
					"borderInfo": {
						"range": "0:100",
						"value": "1px solid #000000"
					}, //边框
					"authority": {}, //工作表保护

				},
				"scrollLeft": 0, //左右滚动条位置
				"scrollTop": 0, //上下滚动条位置
				"luckysheet_select_save": [], //选中的区域
				"calcChain": [], //公式链
				"isPivotTable": false, //是否数据透视表
				"pivotTable": {}, //数据透视表设置
				"filter_select": {}, //筛选范围
				"filter": null, //筛选配置
				"luckysheet_alternateformat_save": [], //交替颜色
				"luckysheet_alternateformat_save_modelCustom": [], //自定义交替颜色	
				"luckysheet_conditionformat_save": {}, //条件格式
				"zoomRatio": 1.6, // 缩放比例
				"image": [], //图片
				"showGridLines": 1, //是否显示网格线
				"dataVerification": dataVerfications, //数据验证配置
				"frozen": {
					type: 'rangeBoth',
					range: {
						row_focus: rowNums - vm.originData.inspections.length - 1,
						column_focus: 0
					}
				}
			}];
			return data;
		},
		rangeSelect(sheet, range, rowNums, colNums) { // lucksheet
			$('#autoInput').val('');

			// 提取选中单元格的行和列信息
			let ranged = {
				r: range[0].row[0],
				c: range[0].column[0],
			};
			console.log(ranged);

			// 从所有允许修改的单元格中，找到对应信息
			const editObj = vm.editCells.filter(item => item.r == ranged.r && item.c == ranged
				.c);


			// 判断点击的是否为检验结果列（指定列，非标题行内的单元格）
			if (ranged.r > vm.headerLevel && ranged.c == colNums) {
				vm.showResult = true;
				// 获取单元格的值
				var cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
				// 赋值选中信息
				vm.editRange = range;
				vm.isJYResult = cellValue;
			}

			// 判断当前选中单元格是否为允许修改的单元格，是的话则让隐藏的输入框聚焦
			if (editObj.length == 0) {
				vm.ChoiceCellData = {};
				vm.showEditWindow = false;
				$('#autoInput').val('')
			} else if (editObj.length) {
				// 赋值选中信息
				vm.editRange = range;
				// 切换后，清除输入框内容
				$('#autoInput').val('');
				let IsWhere = {
					r: editObj[0].r,
					c: editObj[0].c,
				};
				// 获取选中输入框位置对应的对象数据
				let data = GetChoiceCellData(vm.originData.inspections, IsWhere);
				vm.ChoiceCellData = APP.deepClone(data);
				// 获取选中单元格所需的测量设备
				if (data.Benchmark) {
					// 检查 Benchmark 是否包含 '|' 字符
					const benchmark = data.Benchmark;
					const index = benchmark.indexOf('|');

					// 根据是否找到 '|' 来设置 NeedDevice 的值
					vm.DeviceInfo.NeedDevice = index === -1 ? benchmark : benchmark.slice(0,
						index);

					// vm.showEditWindow = true;

					// 判断选中单元格所需测量工具，是否与外部协议工具一致，一致则聚焦输入框，反之不聚焦
					// if (data.Benchmark.indexOf(vm.DeviceInfo.DeviceModel) != -1 && !data
					// 	.IsLaboratory) {

					// 	// 显示输入框
					// 	// vm.showEditWindow = true
					// 	// 聚焦必须要时间，否则无法聚焦
					// 	setTimeout(function() {
					// 		vm.$refs.editKeyControl.querySelector('input').focus();
					// 	}, 50);
					// } else {
					// 	vm.showEditWindow = false;
					// }
				} else {
					vm.showEditWindow = false;
				}

			} else {
				vm.ChoiceCellData = {};
				vm.DeviceInfo.NeedDevice = '不可测量';
			}
		},
		cellEditBefore(range, rowNums, colNums) { // 双击单元格
			// 提取选中单元格的行和列信息
			let ranged = {
				r: range[0].row_focus,
				c: range[0].column_focus,
			};

			console.log(JSON.stringify(vm.editCells));

			// 从所有允许修改的单元格中，找到对应信息
			const editObj = vm.editCells.filter(item => item.r == ranged.r && item.c ==
				ranged.c);


			// 判断点击的是否是最后一列的备注，如果是，则允许弹起键盘
			let IsRemark = false;
			// if (vm.RemarkIndex.c == ranged.c && vm.RemarkIndex.r < ranged.r) {
			// 	IsRemark = true;
			// };

			// 当前选中单元格为 允许修改的单元格 || 备注项
			if (editObj.length > 0 || IsRemark) {
				let IsWhere = {
					r: ranged.r,
					c: ranged.c,
				};
				// 获取选中输入框位置对应的对象数据
				let data = GetChoiceCellData(vm.originData.inspections, IsWhere);
				console.log(JSON.stringify(data));


				function showAndFocusInput(cellValue) {
					// 可弹起软键盘 , 若 InputFocus 为 none 时，禁止键盘弹起
					vm.InputFocus = 'text';
					// 修改输入框盒子层级，控制输入框显示隐藏
					// 给输入框赋值
					// 延迟聚焦输入框
					setTimeout(() => {
						vm.showEditWindow = true;
						vm.allowToNext = true;
						$('#autoInput').val(cellValue);
						// vm.$refs.editKeyControl.querySelector('input').focus();

					}, 50);
				}

				if (IsRemark) {
					// 备注
					// 获取选中单元格的位置和内容
					const cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
					// 显示并聚焦输入框
					showAndFocusInput(cellValue);
				} else {
					const benchmark = data.Benchmark;
					const index = benchmark.indexOf('|');
					const NeedDevice = index === -1 ? benchmark : benchmark.slice(0,
						index);
					console.log(NeedDevice);
					// 特殊设备处理
					// if (NeedDevice.includes("光谱仪")) {
					// 当所需设备为光谱、三坐标等
					// 根据IsLaboratory字段，判断当前单元格是否为报告展示类型

					console.log(data.Type);
					//记录选中单元格对象
					vm.editRange = range;
					if (data.Type == 2) { // 检验标准

						//记录选中单元格对象
						vm.editRange = range;
						vm.isSelectCellResult = data.value;

						if (data.IsLaboratory) {
							// 1、判断当前单元格是否存在值
							// 获取选中单元格的位置和内容
							const cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
							try {
								if (data.value == "") {
									// 没有值的时候调取检验列表数据
									basicConfig.GetPopupInfoByDevice(vm.DeviceInfo.NeedDevice);
								} else {

									// 要求，弹层代码、变量、脚本完善
									vm.rowDeviceForm.result = cellValue && cellValue.toLowerCase() ==
										"ng" ? 0 : 1;

									// 展示明细弹层
									basicConfig.ViewPopupInfoByDevice(NeedDevice);

								}

							} catch (err) {

							}


						} else {
							// 打开选择ok或者ng的弹层
							vm.showSelectCellResult = true;
							vm.showEditWindow = true;
							vm.allowToNext = false;

						}


						// throw '只读，回传报错';
					} else {

						if (data.IsLaboratory) {
							// 1、判断当前单元格是否存在值
							// 获取选中单元格的位置和内容
							const cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
							try {
								if (data.value == "") {
									// 没有值的时候调取检验列表数据
									basicConfig.GetPopupInfoByDevice(vm.DeviceInfo.NeedDevice);
								} else {
									// console.log(cellValue);
									// 要求，弹层代码、变量、脚本完善
									// vm.rowDeviceForm.result = cellValue && cellValue.toLowerCase() ==
									// 	"ng" ? 0 : 1;

									// console.log(NeedDevice);
									// 展示明细弹层
									basicConfig.ViewPopupInfoByDevice(NeedDevice);

								}

							} catch (err) {

							}


						} else {
							vm.InputFocus = 'text';
							vm.allowToNext = true;
							// 获取选中单元格的位置和内容
							const cellValue = luckysheet.getCellValue(ranged.r, ranged.c);
							// 显示并聚焦输入框
							showAndFocusInput(cellValue);

						}

					}
				}

				//记录选中单元格对象
				vm.editRange = range;
			} else {
				vm.showEditWindow = false;
				$('#autoInput').val('');
			}
			throw '只读，回传报错';
		},
		cellUpdated(r, c, oldValue, newValue, isRefresh) {
			const inspections = vm.originData.inspections;
			const parseFloatNewValue = parseFloat(newValue.v);

			for (const inspection of inspections) {
				for (const item of inspection.FQCItems) {
					if (item.r === r && item.c === c) {
						if ($.isNumeric(parseFloat(item.minNum)) && $.isNumeric(parseFloat(item.maxNum))) {
							const minNum = parseFloat(item.minNum);
							const maxNum = parseFloat(item.maxNum);
							const isValid = parseFloatNewValue >= minNum && parseFloatNewValue <= maxNum;
							luckysheet.setCellFormat(r, c, "fc", isValid ? "#07d348" : "#f00");
						} else {
							// 非上下限数值类填写
							// 根据 ok、ng 判断
							const isValid = item.value.toLowerCase() == "ok";
							luckysheet.setCellFormat(r, c, "fc", isValid ? "#07d348" : "#f00");
						}
					}
				}
			}
		},
	}
}()